package com.mini.cn.goods.servlet.ws;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * User: fly
 * Date: 2019-04-18
 * Time: 15:55
 */

/**
 * 这个类是 其中参数accessOrder就是用来指定是否按访问顺序，如果为true，就是访问顺序。
 * 插入顺序：先添加的在前面，后添加的在后面。修改操作不影响顺序
 * 访问顺序：所谓访问指的是get/put操作，对一个键执行get/put操作后，其对应的键值对会移动到链表末尾，所以最末尾的是最近访问的，最开始的是最久没有被访问的，这就是访问顺序。
 *
 * @param <K>
 * @param <V>
 */
public class CallMapCache<K, V> extends LinkedHashMap<K, V> {

    private int maxEntries;

    public CallMapCache(int maxEntries) {
        super(16, 0.75f, true);
        this.maxEntries = maxEntries;
    }

    /**
     * 这个方法就是去掉最久没有访问的
     *
     * @param eldest
     * @return
     */
    @Override
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
        return size() > maxEntries;
    }

}
